class MyException(Exception):
	def __init__(self, value='', code=-1, data=None):
		self.value = value
		self.code = code
		self.data = data

	def __str__(self):
		return self.value+"   - code: "+str(self.code)

class EndBeforeStartException(MyException):
	def __str__(self):
		return repr(self.value or "La data di fine non pu&ograve; precedere quella di inizio")
	
class NoStartTimeException(MyException):
	def __str__(self):
		return repr(self.value or "Specificare una data di inizio")

class ClosedProjectError(MyException):
	def __str__(self):
		return repr(self.value or "Il progetto selezionato &egrave; gi&agrave; stato chiuso")

class NoClosedProjectError(MyException):
	def __str__(self):
		return repr(self.value or "Il progetto selezionato deve prima essere chiuso")

class NoProjectBounded(MyException):
	def __str__(self):
		return repr(self.value or "Non &egrave; stato specificato il progetto associato")

class NoAziendaBounded(MyException):
	def __str__(self):
		return repr(self.value or "Non &egrave; stato specificato il cliente associato")

class CascadeSessionException(MyException):
	def __str__(self):
		return repr(self.value or "Impossibile eliminare il progetto, esistono sessioni ad esso associate")

class FatturaExistException(MyException):
	def __str__(self):
		return repr(self.value or "La fattura esiste gi&agrave;, vuoi crearla nuovamente?")

class FatturaPagataException(MyException):
	def __str__(self):
		return repr(self.value or "E&apos; gi&agrave; stata emessa e pagata una fattura su questo progetto!")

class UserResourceException(MyException):
	def __str__(self):
		return repr(self.value or "Stai accedendo a risorse di un altro utente!")

class ErrorObject:
	def __init__(self, key, message):
		self.key = key
		self.message = message








# generici

class NoUserException(MyException):
	def __init__(self):
		self.value = "Richiesta non autorizzata"
		self.code = 403
		self.data = None

class NoMethodException(MyException):
	def __init__(self, method="---"):
		self.value = "Il metodo "+method+" va reimplementato!"
		self.code = 404
		self.data = None

class NoPostCallPayload(MyException):
	def __init__(self):
		self.value = "Parametri assenti"
		self.code = 400
		self.data = None

class WrongAmountFormatException(MyException):
	def __init__(self):
		self.value = "Il formato numerico non e' valido"
		self.code = 400
		self.data = None

class WrongAmountTypeException(MyException):
	def __init__(self):
		self.value = "Il tipo del valore numerico non e' valido"
		self.code = 400
		self.data = None


#customers

class NoNameAziendaException(MyException):
	def __init__(self):
		self.value = "Specificare una ragione sociale"
		self.code = 400
		self.data = None

class InexistentKeyException(MyException):
	def __init__(self):
		self.value = "La chiave non e' stata trovata"
		self.code = 400
		self.data = None

#projects
class NoNameProgettoException(MyException):
	def __init__(self):
		self.value = "Specificare un nome per il progetto"
		self.code = 400
		self.data = None